package cn.itsource.controller;

import cn.itsource.domain.BlogArticleType;
import cn.itsource.query.BlogArticleTypeQuery;
import cn.itsource.service.BlogArticleTypeService;
import cn.itsource.util.AjaxResult;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController //@Contorller和@ResponseBody（所有的方法都返回json格式）
@RequestMapping("/blogArticleType") //公共路径
public class BlogArticleTypeController {

    /**
     * 注入Service
     */
    @Autowired
    private BlogArticleTypeService blogArticleTypeService;


    /**
     * 查询分页数据
     * @return
     * @RequestBody：前后台分离的项目，接受对象就得用它
     */
    @GetMapping ("/list")
    public AjaxResult list() {
        //1.调用service获取到所有的用户列表数据
        List<BlogArticleType> all = blogArticleTypeService.findAll();
        //2.通过统一对象返回数据
        return AjaxResult.Success(all);
    }
    @PostMapping ("/pagelist")
    public AjaxResult pagelist(@RequestBody BlogArticleTypeQuery typeQuery) {
        //1.调用service获取到所有的用户列表数据
        PageInfo<BlogArticleType> blogArticleTypePageInfo = blogArticleTypeService.pageList(typeQuery);
        //2.通过统一对象返回数据
        return AjaxResult.Success(blogArticleTypePageInfo);
    }
    /**
     * 新增或者修改，根据id来区分
     * @return
     * @RequestBody：前后台分离的项目，接受对象就得用它
     */
    @PostMapping("/save")
    public AjaxResult saveOrUpdate(@RequestBody BlogArticleType blogArticleType){

        try {
            //如果id为空就是新增  else就是修改     修改是有id 的  新增没有id
            if (blogArticleType.getId() == null){
                blogArticleTypeService.save(blogArticleType);
            }else {
                blogArticleTypeService.update(blogArticleType);
                System.err.println(blogArticleType);
            }
            //2.通过统一对象返回数据
            return AjaxResult.Success();
        } catch (Exception e) {
            //打印错误的堆栈信息
            e.printStackTrace();
            return AjaxResult.error("系统异常，联系管理员");
        }
    }

     /*
     * 删除
     */
    @DeleteMapping("/{id}")
    public AjaxResult delete(@PathVariable("id") Long id){
        try {
            //1.调用删除的方法
            blogArticleTypeService.delete(id);
            //2.通过统一对象返回数据
            return AjaxResult.Success();
        } catch (Exception e) {
            //打印错误的堆栈信息
            e.printStackTrace();
            return AjaxResult.error("系统异常，联系管理员");
        }
    }
    @PostMapping("/deleteBatch")
    public AjaxResult deleteBatch(@RequestBody BlogArticleTypeQuery query ){
        try{
            Long[] ids = query.getIds();
            for (Long id : ids) {
                blogArticleTypeService.delete(id);
            }
            return new AjaxResult();
        } catch (Exception e) {
            //打印错误的堆栈信息
            e.printStackTrace();
            return AjaxResult.error("系统异常，联系管理员");
        }
    }

}
